classdef KPOINTS < handle
  %KPOINTS Summary of this class goes here
  %   Detailed explanation goes here
  
  properties
    CommentLine;
    NumKPoints;
    CoordinatesType;
    Grid;
  end
  
  methods
    function kObj = KPOINTS(commentsLine, numKPoints, coordinatesType,...
        grid)
      kObj.CommentLine = commentsLine;
      kObj.NumKPoints = numKPoints;
      kObj.CoordinatesType = coordinatesType;
      kObj.Grid = grid;
    end
  end

  methods(Static)    
    
    test();

    function kObj = create_RHL_1_bandstructure(eta)
      nu = 3/4 - eta/2;
      grid = [0 0 0; ... % Gamma
        eta*degree 1/2 1-eta*degree; ... % B

        eta*degree 1/2 1-eta*degree; ... % B
        1/2 1-eta*degree eta*degree-1; ... %B_1
        
        1/2 1-eta*degree eta*degree-1; ... %B_1
        1/2 1/2 0; ... %F
        
        1/2 1/2 0; ... %F
        1/2 0 0; ... %L
        
        1/2 0 0; ... %L
        0 0 -1/2; ... %L_1
        
        0 0 -1/2; ... %L_1
        eta*degree nu*degree nu; ... %P
        
        eta*degree nu*degree nu; ... %P
        1-nu 1-nu 1-eta; ... %P_1
        
        1-nu 1-nu 1-eta; ... %P_1
        nu nu eta-1; ... %P_2
        
        nu nu eta-1; ... %P_2
        1-nu nu 0; ... %Q
        
        1-nu nu 0; ... %Q
        nu 0 -nu; ... %X
        
        nu 0 -nu; ... %X
        1/2 1/2 1/2]; %Z
      kObj = KPOINTS('k-points along high symmetry lines', 10, {'L', 'rec'},...
        grid);

    end

    function kObj = create_hex_bandstructure()
      grid = [0 0 0; ... % Gamma
        0 0 1/2; ... % A
        1/3 1/3 1/2; ... % H
        1/3 1/3 0; ... % K
        1/2 0 1/2; ... % L
        1/2 0 0]; % M
      kObj = KPOINTS('k-points along high symmetry lines', 10, 'K',...
        grid);
    end
    
  end
  
end

